/*题目：编写一个程序，将第一行和第二行两行已经从小到大排序的整数序列合并为一个大的
升序整数数列并打印出来，若n和m分别为第一行、第二行的有序数列元素个数，则合并后
的序列原数个数为n+m，允许重复。提示：虽然可以一次性把所有行的数据读入到一个大的
数组中，最后统一进行排序，但这样可能性能较低，建议不要这么做！
输入格式：
输入两行，分别有 n 个和 m 个从小到大排序的整数，之间用空格隔开。
输出格式：
输出一行，输入两个的包括 n+m 个从小到大排序的整数序列。
输入样例：
1 3 5 7 9
2 4 6 7
输出样例：
1 2 3 4 5 6 7 7 9
*/
#include <stdio.h>  
  
int main() 
{

    int n, m;  
    int arr1[100], arr2[100], merged[200];   
  
    scanf("%d", &n);  
    for (int i = 0; i < n; i++) {  
        scanf("%d", &arr1[i]);  
    }  
  
    scanf("%d", &m);  
    for (int i = 0; i < m; i++) {  
        scanf("%d", &arr2[i]);  
    }  
  
    int i = 0, j = 0, k = 0;  
    while (i < n && j < m) {  
        if (arr1[i] <= arr2[j]) {  
            merged[k++] = arr1[i++];  
        } else {  
            merged[k++] = arr2[j++];  
        }  
    }  
  

    while (i < n) {  
        merged[k++] = arr1[i++];  
    }  
    
    while (j < m) {  
        merged[k++] = arr2[j++];  
    }  
  
    for (int i = 0; i < k; i++) {  
        printf("%d ", merged[i]);  
    }  
    printf("\n");  
  
    return 0;  
}
